/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package recanto.das.pedrinhas.dao;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import recanto.das.pedrinhas.bean.Cliente;
import recanto.das.pedrinhas.bean.Observacao;
import recanto.das.pedrinhas.controller.ClienteController;
import util.NewHibernateUtil;

/**
 *
 * @author Guilherme
 */
public class ObservacaoDao {
    private Session session;
    private Observacao observacao;    
    
    public ObservacaoDao(){
        this.session = NewHibernateUtil.getSessionFactory().openSession();
    }
    
    public void salvar (Observacao observacao){
        try{
            Transaction transaction = session.beginTransaction();
            this.session.save(observacao);
            transaction.commit();
        }catch(HibernateException ex){
           System.out.print("Erro: "+ex); 
        }
    }
    
    public void alterar(Observacao o){
        try{
            Transaction transaction = session.beginTransaction();
            this.session.update(o);
            transaction.commit();
        }catch(HibernateException ex){
            System.out.print("Erro: "+ex); 
        }
    }
    
    public void delatar(){
        try{
            this.session.delete(observacao);
        }catch(HibernateException ex){
            System.out.print("Erro: "+ex); 
        }
    }
    
    public Observacao carregaPorClienteId (int cli_id){
        try{
            return(Observacao) this.session.load(ClienteDao.class, "id_cli");
        }catch(HibernateException ex){
            System.out.print("Erro: "+ex); 
            return null;
        }
    }
    
    public void fechaSession (){
        try{
            session.close();
        }catch(HibernateException ex){
            System.out.println("Erro: "+ex);
        }
    }
    
    public List<Observacao> listaTudo(){
        try{
            return this.session.createCriteria(Observacao.class).list();
        }catch(HibernateException e){
            System.out.println("Erro: "+e);
            return null;
        }
    }
    
    public ArrayList<Cliente> listaApenasTitulares(){
        Cliente c = new Cliente();
        List<Observacao> lista = listaTudo();
        ArrayList<Cliente> listaClientes = new ArrayList<Cliente>();
        for (int i = 0; i < lista.size(); i++) {
            if (lista.get(i).getTitularId() == lista.get(i).getIdCli()){
                c = lista.get(i).getTitularId();
                listaClientes.add(c);
            }
        }
        return listaClientes;
    }
    
    public List<Observacao> listaObservaçãoPorTirulares(Cliente c){
        try{
            return this.session.createCriteria(Observacao.class)
                    .add(Restrictions.eq("titularId", c)).list();
        }catch(HibernateException e){
            System.out.println("Erro: " + e);
            return null;
        }
    } 
    
    public List<Observacao> listaObservaçãoPorClienteId(Cliente c){
        try{
            return this.session.createCriteria(Observacao.class)
                    .add(Restrictions.eq("idCli", c)).list();
        }catch(HibernateException e){
            System.out.println("Erro: " + e);
            return null;
        }
    } 
    
}
